﻿Ext.define('HIT.view.ReportEditWin', {// 报表编辑
	extend : 'Ext.form.Panel',
	alias : 'widget.reporteditpanel',
	id : 'report-edit-grid',
	width : 700,
	height : 500,
	autoScroll : true,
	overlapHeader : false,
	preventHeader : true,
	title : '报告编辑',

	initComponent : function() {
		var me = this;
		
		var conditionstore = new Ext.data.JsonStore({
			autoDestroy : true,
			proxy: { 
                type : 'ajax', 
                url : ctx + '/gettablefield',
                params : {},
                reader : {
                    type : 'json', 
                    totalProperty : '',
                    root : '' 
                } 
			},
	        fields : ['value','value'], 
	        autoLoad : false 
	     });
		
		function checkFieldProperty(tablename, field, id, inputvalue) {
			if ((tablename == null || tablename == '') 
					|| (field == null || field == '') 
					|| (inputvalue == null || inputvalue == '')) {
				return;
			}
			/**
			 * 验证输入的值是否与字段属性匹配
			 * 1，获取当前字段的属性；
			 * 2，取得当前输入的值；
			 */ 
			var islegal = false;
			
			Ext.Ajax.request({
				// 从controller返回的response中读取数据
				url : 'getFieldProperty',
				method : 'POST',
				params : {
					tablename : tablename,
					field : field,
					inputvalue : inputvalue
				},
				async : false,
				success : function(response) {
					s = response.responseText;
					
					json = Ext.JSON.decode(s);
					if (json.resultcode == '0') {
						islegal = json.islegal;
					}
				}
			});
			return islegal;
		}
		
		Ext.applyIf(me, {
			items : [{
				xtype : 'hiddenfield',
				id : 'functionId',
				value : 0
			}, {
				xtype : 'form',
				x : 15,
				y : 10,
				width : 629,
				id : 'report-all-info',
				items : [ {// 步骤1：选择表或视图名
					xtype : 'fieldset',
					x : 10,
					y : 10,
					height : 80,
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤1：选择表或视图名'),
					items : [ {
						xtype : 'combobox',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 15 : 10,
						width : 400,
						labelWidth : 160,
						fieldLabel : Share.T('请选择要创建的模板视图'),
						allowBlank : false,
						editable: false,
                        msgTarget  : 'side',
						id : 'report-table',
						listeners:{
							change:function(){
								var t_name = Ext.getCmp('report-table').getValue();
								var store = Ext.getCmp('filter_field1').getStore();
								var table_field = Ext.getCmp('table_field').getStore();
								 store.on('beforeload', function(store) {
					         			Ext.apply(store.proxy.extraParams , {
					         				                                 t_name : t_name
					         				                                 });
				                 });
								 table_field.on('beforeload', function(store) {
					         			Ext.apply(store.proxy.extraParams , {
					         				                                 t_name : t_name
					         				                                 });
				                 });
				                store.load();
				                table_field.load();
							}
						},
						store : new Ext.data.Store({
							proxy : {
								type : 'ajax',
								url : ctx + '/getreporttable',
								params : {},
								reader : {
									type : 'json',
									totalProperty : '',
									root : ''
								}
							},
							fields:['t_name','value'],
							autoLoad : true
						}),
						valueField   : 'value',
	                    displayField : 't_name'
					} ]
				}, {// 步骤2：条件提示
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 100,
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤2：条件提示'),
					items : [ {
						xtype : 'textfield',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 10 : 5,
						id : 'report-name',
						width : 250,
						labelWidth : 80,
						allowBlank : false,
						blankText  : Share.T('模板名称不能为空'),
                        msgTarget  : 'side',
                        regex      : /^[A-Za-z0-9-_\u4e00-\u9fa5]+$/,
                        regexText  : Share.T('模板名称只能输入数字，汉字，字母，下划线'),
                        msgTarget:'side',
						fieldLabel : Share.T('模板名称')
					},{
						xtype : 'label',
						x : 270,
						y : ChangeSystem.Explore == 'IE8' ? 13 : 8,
						text : Share.T('*模板名称不能包含特殊字符(&#%)'),
						style : 'font-width:10px;color:#909090;'
					},{
						xtype : 'textfield',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 45 : 35,
						id : 'report-describe',
						width : 500,
						labelWidth : 80,
						regex : /^[A-Za-z0-9_\u4e00-\u9fa5]+$/,
						regexText : Share.T('模板描述只能输入数字，汉字，字母，下划线'),
						msgTarget:'side',
						fieldLabel : Share.T('模板描述')
					} ]
				}, {// 步骤3：制定过滤条件
					xtype : 'fieldset',
					x : 10,
					y : 20,
					width : 585,
					title : Share.T('步骤3：指定过滤条件'),
					items : [ {
						layout : "form",
						border : false,
						width:590,
						items : [ {
							layout : "absolute", 
							height:22,
							border : false,
							items : [ {
								xtype : 'label',
								text : Share.T('字段'),
								labelWidth : 180,
								height : 22,
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								width : 180
							}, {
								xtype : 'label',
								text : Share.T('条件'),
								labelWidth : 80,
								width : 80,
								height : 22,
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								x : 181
							}, {
								xtype : 'label',
								text : Share.T('值'),
								labelWidth : 130,
								width : 130,
								height : 22,
								regex : /^[A-Za-z0-9\u4e00-\u9fa5]+$/,
								regexText : Share.T('模板描述只能输入数字，汉字，字母'),
								msgTarget:'side',
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								x : 262
							} ]
						}, {// 行2
							xtype : 'fieldset',
							id : 'filter_condition',
							border : false,
							items : [ {
								layout : "hbox", 
								border : false,
								items : [{
										xtype : "combo",
										id : 'filter_field1',
										width : 180,
										editable: false,
										x : 0,
										msgTarget:'side',
										store : conditionstore,
										valueField : 'value',
					                    displayField : 'value',
					                    listeners : {
					                    	change : function(e) {
					                    		Ext.getCmp('filter_value' + e.id.substr(12, e.id.length)).focus();
					                    	}
					                    }
									}, {
										xtype : "combo",
										x : 181,
										width : 80,
										id : 'operator1',
										msgTarget:'side',
										displayField : 'text',
										valueField : 'value',
										editable: false,
										store: new Ext.data.JsonStore({  
					    					proxy: { 
					        	                type: 'ajax', 
					        	                url : ctx + '/getComboDataNoOrder',
					        	                params:{
					        	                },
					        	                reader: { 
					        	                    type: 'json', 
					        	                    totalProperty: '', 
					        	                    root: '' 
					        	                } 
					        	             }, 
					        	            fields:['text','value'], 
					        	            autoLoad:true 
								        }),
								        listeners : {
								        	beforerender:function(){
								        		this.store.removeAll();
								        		this.store.on('beforeload', function(store) {
								        			Ext.apply(store.proxy.extraParams , {
								        				type : 'reportadd'
								        			});
								        		});
								        		this.store.load();
								        	}
								        }
									}, {
										xtype : "textfield",
										id : 'filter_value1',
										x : 262,
										regex      : /^[A-Za-z0-9\u4e00-\u9fa5]+$/,
								        regexText  : Share.T('过滤条件值只能输入数字，汉字，字母'),
								        msgTarget:'side',
										width : 130,
										listeners : {
											blur : function (e, evn, eOpts) {
												var id = e.id;
												var i = id.substr(12, id.length);
												
												var inputvalue = e.value;
												var tablename = Ext.getCmp('report-table').getValue();
												var field = Ext.getCmp('filter_field' + i).getValue();
												var islegal = checkFieldProperty(tablename, field, id, inputvalue);
												
												if (!islegal) {
													Ext.getCmp(id).markInvalid(Share.T('请输入合法值。'));
													isCanSave = false;
												} else {
													e.clearInvalid();
													isCanSave = true;
												}
											}
										}
									}, {
										xtype : 'button',
										id : 'filter_del1',
										width : 50,
										x : 408,
										text : Share.T('删除'),
										onClick : function() {
											Ext.getCmp('filter_del1').setVisible(false);
											Ext.getCmp('filter_value1').setVisible(false);
											Ext.getCmp('operator1').setVisible(false);
											Ext.getCmp('filter_field1').setVisible(false);
										}
									} ]
								},{
									xtype : 'button',
									id : 'addbtn',
									width : 50,
									text : Share.T('添加'),
									x : 390
								}
							]
						} ]
					} ]
				}, 
				{// 步骤4：选择要显示的字段
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 235,
					width : 585,
					id:'table_field_fieldset',
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤4：选择要显示的字段'),
					items : [ {
                        xtype : 'itemselector',
                        anchor : '100%',
                        name : 'itemselector',
                        autoScroll : true,
                        allowBlank : false,
						blankText  : Share.T('字段不能为空。'),
                        msgTarget  : 'side',
                        height : 185,
                        id : 'table_field',                   
                        imagePath : ctx+'/resources/extjs/ux/images/',
                        listeners : {
                            beforequery : function(qe)
                            {
                                this.store.load();
                            }
                        },
                        store : new Ext.data.Store({
        					proxy : {
            	                type : 'ajax',
            	                url : ctx + '/gettablefield',
            	                params : {},
            	                reader : {
            	                    type : 'json', 
            	                    totalProperty : '', 
            	                    root : ''
            	                }
	            	        },
	            	        fields:['text','value'], 
	            	        autoLoad:false ,
	            	        sortInfo: {
	                            field: 'field',
	                            direction: 'ASC'
	                        }
	            	       
				       	}),
                        displayField: 'value',
                        valueField: 'text',
                        value: [],
                        fromTitle: Share.T('待选择'),
                        toTitle: Share.T('已选择' )                  
                      } ]
				},// 步骤4结束
				{// 步骤5：选择要授权的用户
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 255,
					id : 'user_fieldset',
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤5：选择要授权的用户'),
					items : [ {
						xtype : 'button',
						x : 463,
						id : 'getusergroup',
						name :'getusergroup',
						width : 100,
						text : Share.T('请选择用户组')
					}, {
						xtype : 'itemselector',
						anchor : '100%',
						imagePath : ctx + '/resources/extjs/ux/images/',
						y : ChangeSystem.Explore == 'IE8' ? 40 : 30,
						height : 180,
						id : 'user',
						name : 'user',
						autoScroll : true,
						width : 550,
						store : new Ext.data.JsonStore({
        					proxy: { 
            	                type : 'ajax', 
            	                url : ctx + '/getuser',
            	                params : {},
            	                reader : { 
            	                    type : 'json',
            	                    totalProperty : '',
            	                    root : '' 
            	                } 
	            	        },
	            	        fields:['text','value'], 
	            	        autoLoad : true 
				        }),
				        displayField : 'text',
						valueField : 'value',
						fromTitle : Share.T('可选的用户'),
						toTitle : Share.T('选取的用户')
					} ]
				},{
					xtype : 'fieldset',
					border : false
				} // 步骤5结束
				]
			}]
		});
		me.callParent(arguments);
	}
});